package com.gitee.huanminabc.jcommon.enums;

import java.util.Objects;

/**
 * @description:
 * @author: huanmin
 * @create: 2025-04-18 17:36
 **/
public interface EnumSuper {
    /**
     * @return 枚举的名称
     */
    String getCode();

    /**
     * 返回枚举描述
     * @return 枚举说明
     */
    String getDescription();


    /**
     * 对比当前枚举对象和传入的枚举值是否一致（String类型会忽略大小写）
     * 当前枚举项是否匹配远端传入的值（比如：数据库的字段值、rpc传入的参数值）
     *
     * @param enumCode 枚举code 或者 枚举
     * @return 是否匹配
     */
    default boolean codeEquals(Object enumCode) {
        if (enumCode == null) return false;
        if (enumCode instanceof String) {
            return ((String) enumCode).equalsIgnoreCase((String) getCode());
        } else {
            return Objects.equals(this.getCode(), enumCode);
        }
    }

    default boolean descEquals(String enumDesc) {
        if (enumDesc == null) return false;
        return Objects.equals(this.getDescription(), enumDesc);
    }

}
